"""类方法重构"""
from PyQt5.QtWidgets import QLabel, QApplication, QToolTip
from PyQt5.QtCore import Qt, QObject, QEvent
from PyQt5.QtGui import QFont, QCursor


"""创建一个Lable的悬停信息管理器"""
class HoverInfoManager(QObject):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.hoverLabels = {}  # 用于存储标签和其对应的信息

    def add_hover_info(self, label: QLabel, info: str):
        """
        给指定的QLabel添加悬停信息
        :param label: QLabel对象
        :param info: 需要显示的额外信息
        """
        if label not in self.hoverLabels:
            self.hoverLabels[label] = info
            label.installEventFilter(self)  # 安装事件过滤器

    def eventFilter(self, watched: QObject, event: QEvent) -> bool:
        if event.type() == QEvent.Enter:
            label = watched
            if label in self.hoverLabels:
                self.show_tooltip(label, self.hoverLabels[label])
                return True
        elif event.type() == QEvent.Leave:
            QApplication.restoreOverrideCursor()  # 如果有需要的话，可以在这里恢复光标
            return False
        return super().eventFilter(watched, event)

    def show_tooltip(self, label: QLabel, text: str):
        """
        在鼠标悬停时显示工具提示
        :param label: QLabel对象
        :param text: 显示的文本
        """
        QApplication.setOverrideCursor(Qt.ArrowCursor)  # 设置光标（可选）
        QToolTip.showText(QCursor.pos(), text, label)  # 使用QToolTip显示信息





